#-*- Makefile -*-
include ../../gnuwin32/MkRules

ifdef DEBUG
 OPTFLAGS=$(G_FLAG) -O3 -Wall
 DLLFLAGS=
else
 OPTFLAGS=-O3 -Wall -pedantic
 DLLFLAGS=-s
endif

.PHONY: cpy test

all: shared

static:
	$(MAKE) -f Makefile.win cpy
	$(MAKE) -f Makefile.win makeMakedeps
	$(MAKE) -f Makefile.win libRmath.a

shared: static
	$(MAKE) -f Makefile.win Rmath.dll

implib: libRmath.dll.a

cpy: stamp-src

stamp-src: $(SOURCES_NMATH)
	$(CP) -p ../*.c .
	touch $@

test: test.exe test-static.exe

## see R-admin for alternatives
test.exe: test.c
	$(CC) -I../../include -DRMATH_DLL -o $@ $< -L. Rmath.dll
	./$@
test-static.exe: test.c
	$(CC) -I../../include -o $@ $< -L. libRmath.a
	./$@

clean:
	$(RM) $(SOURCES_NMATH) *.o *.d *.def Makedeps stamp-src
distclean: clean
	$(RM) *.a Rmath.dll test*.exe

DEFS = -DHAVE_CONFIG_H -DMATHLIB_STANDALONE
CPPFLAGS=-I.. -I../../include $(DEFS)
CFLAGS=$(OPTFLAGS)

SOURCES_NMATH = \
	mlutils.c \
	d1mach.c i1mach.c \
	fmax2.c fmin2.c fprec.c fround.c ftrunc.c \
	sign.c fsign.c \
	imax2.c imin2.c \
	chebyshev.c log1p.c expm1.c lgammacor.c gammalims.c stirlerr.c bd0.c \
	gamma.c lgamma.c gamma_cody.c beta.c lbeta.c polygamma.c \
	bessel_i.c bessel_j.c bessel_k.c bessel_y.c \
	choose.c \
	snorm.c sexp.c \
	dgamma.c pgamma.c qgamma.c rgamma.c \
	dbeta.c pbeta.c qbeta.c rbeta.c \
	dunif.c punif.c qunif.c runif.c \
	dnorm.c pnorm.c qnorm.c rnorm.c \
	dlnorm.c plnorm.c qlnorm.c rlnorm.c \
	df.c pf.c qf.c rf.c dnf.c \
	dt.c pt.c qt.c rt.c dnt.c \
	dchisq.c pchisq.c qchisq.c rchisq.c rnchisq.c \
	dbinom.c pbinom.c qbinom.c rbinom.c \
	rmultinom.c \
	dcauchy.c pcauchy.c qcauchy.c rcauchy.c \
	dexp.c pexp.c qexp.c rexp.c \
	dgeom.c pgeom.c qgeom.c rgeom.c \
	dhyper.c phyper.c qhyper.c rhyper.c \
	dnbinom.c pnbinom.c qnbinom.c rnbinom.c \
	dpois.c ppois.c qpois.c rpois.c \
	dweibull.c pweibull.c qweibull.c rweibull.c \
	dlogis.c plogis.c qlogis.c rlogis.c \
	dnchisq.c pnchisq.c qnchisq.c \
	dnbeta.c pnbeta.c qnbeta.c \
	pnf.c pnt.c qnf.c qnt.c \
	ptukey.c qtukey.c \
	toms708.c wilcox.c \
	signrank.c
DEPENDS = $(SOURCES_NMATH:.c=.d)

libRmath.a: sunif.o $(SOURCES_NMATH:.c=.o)
Rmath.def: sunif.o $(SOURCES_NMATH:.c=.o)
	$(ECHO) EXPORTS > $@
	$(NM) $^ | $(SED) -n 's/^........ [BCDRT] _/ /p' >> $@
Rmath.dll: libRmath.a Rmath.def
	$(DLL) $(DLLFLAGS) --shared -o $@ Rmath.def $^
libRmath.dll.a: Rmath.def

# Dependencies
makeMakedeps: $(DEPENDS)
	@$(RM) Makedeps
	@cat $(DEPENDS) >> Makedeps

-include Makedeps
